#include "kgetopt.h"

// 找到子字符串第一次出现的位置。
int find_str(const char* str, const char* substr)
{
    char* pos = strstr(str, substr);
    if (pos) {
        return pos - str;
    } else {
        return -1;
    }
}

// 寻找pos后的两个空格位置
void find_space(const char* str, int pos, int* start, int* end)
{
    while (str[pos]) {
        if (str[pos] == ' ') {
            *start = pos;
            break;
        }
        pos++;
    }
    pos++;
    while (str[pos]) {
        if (str[pos] == ' ') {
            *end = pos;
            break;
        }
        if (str[pos + 1] == '\0') {
            *end = pos;
            break;
        }
        pos++;
    }
}

// 将值复制到指定位置。
void mystrncpy(char* dest, const char* src, int pos, int len)
{
    int i = 0;
    while (len) {
        dest[i] = src[pos + 1 + i];
        i++;
        len--;
    }
}
// 查找substr对应的值
char* findval(const char* str, const char* substr)
{
    int   pos = find_str(str, substr);
    char* val;
    if (pos >= 0) {
        int start = 0;
        int end   = 0;
        find_space(str, pos, &start, &end);
        val = kmalloc(end - start, GFP_KERNEL);
        mystrncpy(val, str, start, end - start);
        // printf("find %s val : %s\n", substr, val);
        return val;
    } else {
        return NULL;
    }
}